home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Tests / Passed / test46.pl < prev    next >
Encoding:
Text File  |  1989-04-14  |  784 b   |  34 lines

  1.  
  2. /* Copyright (C) 1988, 1989 Herve' Touati, Aquarius Project, UC Berkeley */
  3.  
  4. main :-
  5.     e(X),
  6.     t_vars_calls(X),
  7.     write(X), nl, fail.
  8.  
  9. %t_vars_calls(X) :-
  10. %    t_vars([[[[1,H_26|-]|fac],H_26|*],1,[0,H_26|=]|cond],X).
  11. t_vars_calls(X) :- t_vars([0,Z|a],X).
  12. %t_vars_calls(X) :- t_vars([[1,Z|-],Z|a],X).
  13.  
  14. e(_).
  15.  
  16. t_vars(_v, [[_v]]) :- var(_v), !.
  17. t_vars(_a, [[]]) :- atomic(_a), !.
  18. t_vars([_func], [[]]) :- atomic(_func), !.
  19. t_vars([_arg|_func], [_g,[_g1|_af1],[_g2|_af2]]) :-
  20.     t_vars(_arg, [_g1|_af1]),
  21.     t_vars(_func, [_g2|_af2]),
  22.     unionv(_g1, _g2, _g). 
  23.  
  24. unionv(S1, S2, S1) :- S1==S2.
  25. unionv([X|S1], S2, Res) :-
  26.     memberv(X, S2), !,
  27.     unionv(S1, S2, Res).
  28. unionv([X|S1], S2, [X|Res]) :-
  29.     unionv(S1, S2, Res).
  30. unionv([], S, S).
  31.  
  32. memberv(X, [Y|_]) :- X==Y, !.
  33. memberv(X, [_|L]) :- memberv(X, L).
  34.